導(dǎo)讀:在日常的應(yīng)用開發(fā)中,我們可能需要讓某些對象離開內(nèi)存空間,存儲(chǔ)到物理磁盤,以便長期保存,同時(shí)也能減少對內(nèi)存的壓力,而在需要時(shí)再將其從磁盤讀取到內(nèi)存,比如將某個(gè)特定的對象保存到
發(fā)表日期:2019-12-10
文章編輯:興田科技
瀏覽次數(shù):7143
標(biāo)簽:
在日常的應(yīng)用開發(fā)中,我們可能需要讓某些對象離開內(nèi)存空間,存儲(chǔ)到物理磁盤,以便長期保存,同時(shí)也能減少對內(nèi)存的壓力,而在需要時(shí)再將其從磁盤讀取到內(nèi)存,比如將某個(gè)特定的對象保存到文件中,隔一段時(shí)間后再把它讀取到內(nèi)存中使用,那么該對象就需要實(shí)現(xiàn)序列化操作,在Java中可以使用Serializable接口實(shí)現(xiàn)對象的序列化,而在android中既可以使用Serializable接口實(shí)現(xiàn)對象序列化也可以使用parcelable接口實(shí)現(xiàn)對象序列化,但是在內(nèi)存操作時(shí)更傾向于實(shí)現(xiàn)parcelable接口,這樣會(huì)使用傳輸效率更高效。接下來我們將分別詳細(xì)地介紹這樣兩種序列化操作。
了解序列化與反序列
序列化
由于存在于內(nèi)存中的對象都是暫時(shí)的,無法長期駐存,為了把對象的狀態(tài)保持下來,這時(shí)需要把對象寫入到磁盤或者其他介質(zhì)中,這個(gè)過程就叫做序列化。
反序列化
反序列化恰恰是序列化的反向操作,也就是說,把已存在在磁盤或者其他介質(zhì)中的對象,反序列化(讀取)到內(nèi)存中,以便后續(xù)操作,而這個(gè)過程就叫做反序列化。
概括性來說序列化是指將對象實(shí)例的狀態(tài)存儲(chǔ)到存儲(chǔ)媒體(磁盤或者其他介質(zhì))的過程。在此過程中,先將對象的公共字段和私有字段以及類的名稱(包括類所在的程序集)轉(zhuǎn)換為字節(jié)流,然后再把字節(jié)流寫入數(shù)據(jù)流。在隨后對對象進(jìn)行反序列化時(shí),將創(chuàng)建出與原對象完全相同的副本。
實(shí)現(xiàn)序列化的必要條件
一個(gè)對象要實(shí)現(xiàn)序列化操作,該類就必須實(shí)現(xiàn)了Serializable接口或者parcelable接口,其中Serializable接口是在java中的序列化抽象類,而parcelable接口則是android中特有的序列化接口,在某些情況下,parcelable接口實(shí)現(xiàn)的序列化更為高效,關(guān)于它們的實(shí)現(xiàn)案例我們后續(xù)會(huì)分析,這里只要清楚知道實(shí)現(xiàn)序列化操作時(shí)必須實(shí)現(xiàn)Serializable接口或者parcelable接口之一即可。
序列化的應(yīng)用情景
主要有以下情況(但不限于以下情況)
1)內(nèi)存中的對象寫入到硬盤;
2)用套接字在網(wǎng)絡(luò)上傳送對象;
3)通過RMI(RemoteMethodInvoke遠(yuǎn)程方法調(diào)用)傳輸對象;
Serializable
Serializable是java提供的一個(gè)序列化接口,它是一個(gè)空接口,專門為對象提供標(biāo)準(zhǔn)的序列化和反序列化操作,使用Serializable實(shí)現(xiàn)類的序列化比較簡單,只要在類聲明中實(shí)現(xiàn)Serializable接口即可,同時(shí)強(qiáng)烈建議聲明序列化標(biāo)識(shí)。
parcelable
鑒于Serializable在內(nèi)存序列化上開銷比較大,而內(nèi)存資源屬于android系統(tǒng)中的稀有資源(android系統(tǒng)分配給每個(gè)應(yīng)用的內(nèi)存開銷都是有限的),為此android中提供了parcelable接口來實(shí)現(xiàn)序列化操作,parcelable的性能比Serializable好,在內(nèi)存開銷方面較小,所以在內(nèi)存間數(shù)據(jù)傳輸時(shí)推薦使用parcelable,如通過Intent在activity間傳輸數(shù)據(jù),而parcelable的缺點(diǎn)就使用起來比較麻煩。
上一篇:
微營銷:微信技巧七大問題替你解答上一篇:
成功的微商靠的真不是微商圈!更多新聞
2023
六安網(wǎng)絡(luò)推廣的費(fèi)用計(jì)算因企業(yè)需求和推廣渠道的不同而有所差異。一般而言,六安網(wǎng)絡(luò)推廣的費(fèi)用包括廣告位費(fèi)用、內(nèi)容制作費(fèi)用、運(yùn)營人員費(fèi)用等。具體費(fèi)用會(huì)根據(jù)企業(yè)的推廣需求和預(yù)算來決定。
View details
2023
在當(dāng)今數(shù)字化時(shí)代,大多數(shù)人會(huì)在互聯(lián)網(wǎng)上搜索他們感興趣的產(chǎn)品和服務(wù)。一個(gè)優(yōu)秀的網(wǎng)站可以通過在搜索引擎中的可見性吸引更多的潛在客戶。通過優(yōu)化您網(wǎng)站的內(nèi)容和關(guān)鍵詞,以及使用其他數(shù)字營銷策略,您可以確保您的網(wǎng)站在搜索結(jié)果中脫穎而出,獲得更多的點(diǎn)擊量和潛在客戶。
View details
2023
如果您對保亭網(wǎng)站優(yōu)化不熟悉或沒有足夠的時(shí)間來進(jìn)行優(yōu)化工作,聘請專業(yè)的保亭網(wǎng)站優(yōu)化公司可能是一個(gè)不錯(cuò)的選擇。他們有經(jīng)驗(yàn)和專業(yè)知識(shí),可以幫助您制定和執(zhí)行有效的優(yōu)化策略。
View details
2023
博爾塔拉網(wǎng)站優(yōu)化是一種通過改善網(wǎng)站結(jié)構(gòu)和內(nèi)容,以提高其在搜索引擎排名中的可見性和可訪問性的技術(shù)。它涉及一系列的優(yōu)化策略,旨在使您的網(wǎng)站在搜索引擎結(jié)果頁面上獲得更高的排名,從而吸引更多的有針對性的流量。
View details